<?php
/**
 +------------------------------------------------------------------------------
 * sqlite2 driver for ePHP
 +------------------------------------------------------------------------------
 * @version 3.0
 * @author  WangXian
 * @package  ephp
 * @email	<admin@loopx.cn>
 * @creation date 2011-2-22 下午05:09:34
 * @last modified 2011-2-22 下午05:09:34
 +------------------------------------------------------------------------------
 */
class db
{
	public $sql='';
	private $_conn;
	static private $_db_handle;
	function __construct($db_config='default')
	{
		if(! isset(self::$_db_handle[$db_config]) )
		{
			//echo 'mysql init...<br />';
			#获取当前数据库配制
			if(false == ( $iconfig = C($db_config, 'db') ) ) show_error('数据库配制文件db.config.php中 '. $db_config .'  未设置。');

			$error_msg = '';
			$this->_conn = sqlite_open( $iconfig['host'], 0666, $error_msg );
			if( empty($this->_conn) ) show_error( $error_msg );

			// 把mysql连接语柄放到static静态区中
			self::$_db_handle[$db_config] = $this->_conn;
		}
		else $this->_conn = self::$_db_handle[$db_config];

	}

	/**
	 * 执行mysql query()操作
	 * @param String $sql
	 */
	public function query($sql)
	{
		$this->sql = $sql;

		// 是否记录 SQL log
		if( true == C('sql_log') )
			wlog('SQL-Log-'.date('Y-m-d').'.log', '['. date('H:i:s') .']'.$sql);

		$error_msg = '';
		if(true == ( $rs = sqlite_query($this->_conn, $sql, SQLITE_BOTH, $error_msg) ) )
		{
			#统计数据库查询次数
			global $run_dbquery_count;
			$run_dbquery_count++; #数据库查询次数

			return $rs;
		}
		else if( C('show_errors') ) show_error('执行sqlite_query()出现错误: '. $error_msg .'<br />原SQL: '.$sql);
		else exit('db driver query() error.'); //return false;
	}
	
	/** 最后执行插入的id。 **/
	public function insert_id()
	{
		return sqlite_last_insert_rowid($this->_conn);
	}
	
	/** 影响的数据总行数。 **/
	public function affected_rows()
	{
		return sqlite_changes($this->_conn);
	}
	
	/**
	 * 查询一条数据，返回数据格式array
	 * @param String $sql
	 */
	public function fetch_array($sql)
	{
		$this->sql = $sql;
		return sqlite_fetch_array( $this->query($sql), SQLITE_ASSOC );
	}
	
	/**
	 * 查询多条数据，返回数据格式array
	 * @param string $sql
	 */
	public function fetch_arrays($sql)
	{
		$this->sql = $sql;
		return sqlite_fetch_all( $this->query($sql), SQLITE_ASSOC );
	}
	
	/**
	 * 查询一条数据，返回数据格式Object
	 * @param string $sql
	 */
	public function fetch_object($sql)
	{
		return (object)$this->fetch_array($sql);
	}
	
	/**
	 * 查询多条数据，返回数据格式Object
	 * @param string $sql
	 */
	public function fetch_objects($sql)
	{
		$arr = $this->fetch_arrays($sql);
		if(!empty($arr)):
			foreach ($arr as $k=>$v)
				$arr[$k] = (object)$v;
		endif;
		return $arr;
	}
	
	/** 获取最后执行的sql语句。 **/
	public function getLastSql()
	{
		return $this->sql;
	}
}
/* End of file sqlite2.class.php */
/* Location: ./_framework/dbdrivers/sqlite2.class.php */